#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QList>

class GameBoard;
class GameBoardView;
class GameBoardSolver;
namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

  public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

  public slots:
    void addBoardBtnClicked();
    void solveBtnClicked();
    void applySolverBtnClicked();
    void solved(bool solved);

  private:
    struct GameSolverTuple
    {
      GameBoard *mBoard;
      GameBoardView *mView;
      GameBoardSolver *mSolver;

      GameSolverTuple() : mBoard(NULL), mView(NULL), mSolver(NULL) {}
    };

    Ui::MainWindow *ui;
    QList< QList<GameSolverTuple> > mGames;
    bool mRowInc;
};

#endif // MAINWINDOW_H
